/*
 * @Author: january.cjy
 * @Date: 2021-09-27 19:46:13
 * @Last Modified by: january.cjy
 * @Last Modified time: 2021-09-27 21:01:05
 */
#pragma once

#include "clang/AST/AST.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Decl.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/Basic/SourceManager.h"

namespace cmg {
using namespace clang;
using namespace llvm;
class CmgRecursiveASTVisitor
    : public RecursiveASTVisitor<CmgRecursiveASTVisitor> {
public:
  using base = RecursiveASTVisitor<CmgRecursiveASTVisitor>;
  explicit CmgRecursiveASTVisitor(ASTContext &ctx, SourceManager &sm);
  bool VisitDecl(Decl *d);

private:
  ASTContext &ctx;
  SourceManager &sm;
};

} // namespace cmg